package com.example.baseweather;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;

import com.example.baseweather.databinding.ActivityMainBinding;
import com.example.baseweather.utils.CommonUtils;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

    private static final String[] permissions = {
            Manifest.permission.READ_EXTERNAL_STORAGE
    };
    private static final int REQUEST_CODE = 0x0001;
    private static final String filePath =
            Environment.getExternalStorageDirectory().getPath() + File.separator
                    + "DownLoad";
    private Pattern songPattern = Pattern.compile("(.+).(mp3|ogg)");

    private static HashMap<String, String> songMap = new HashMap<>();

    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
//        中控大屏开启时，在仪表屏中选择媒体进行切换和播放。
//        1.仪表屏幕中间显示媒体组件，组件内上方显示正在播放的媒体
//        信息例如“歌曲名称”“音视频名称”信息栏、“音量显示”。信息
//        栏下方显示播放控制按钮，“播放/暂停”“上一曲下一曲”“音量滑
//        块”“静音”，在操控设备中点击“播放/暂停”，仪表屏中的按钮随
//        之切换“播放/暂停”状态，点击操控设备中的“上一曲下一曲”按钮， 仪表屏可切换正在播放媒体信息，点击操控设备中的“静音”按钮， 仪表屏幕“音量显示”调节到静音模式。
//        2.主控屏中显示当前播放的歌曲名称、歌曲进度和歌词，显示“播放/暂停”“上一曲下一曲”“音量滑块”“静音”按钮，点击各自按 钮可对当前播放的歌曲进行操作。
//        3.中控大屏的主屏和仪表屏，同步播放同一首歌曲，同步音量， 并同一音源输出
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        requestPe();
        initFile();
    }


    private void initFile() {
        final File file = new File(filePath);
        final File[] files = file.listFiles();
        Arrays.stream(files).forEach(item -> {
            final Matcher matcher = songPattern.matcher(item.getName());
            if (matcher.matches()) {
                final File file1 = new File(filePath + File.separator + matcher.group(1) + ".lrc");
                if (file1.exists()) {
                    songMap.put(file.getPath(), file1.getPath());

                } else {
//                    songMap.put(file.getPath(), null);
                }
            }
        });
        if (songMap.isEmpty()) {
            CommonUtils.showToastLong("当前未找到歌曲");
        }else{
            final Set<Map.Entry<String, String>> entries = songMap.entrySet();
            for (Map.Entry<String, String> entry : entries) {
                binding.lyView.setLyricFile(new File(entry.getValue()));
            }
        }

        //初始化歌曲
//        songMap.forEach((key, value) -> {
//            if (value != null) {
//                binding.lyView.setVisibility(View.VISIBLE);
//                binding.tvInfo.setVisibility(View.GONE);
//                binding.lyView.setLyricFile(new File(value));
//            }
//            binding.lyView.setVisibility(View.GONE);
//            binding.tvInfo.setVisibility(View.VISIBLE);
//        });

    }


    private void requestPe() {
        ArrayList<String> strings = new ArrayList<>();
        Arrays.stream(permissions).forEach(item -> {
            if (ContextCompat.checkSelfPermission(this, item) != PackageManager.PERMISSION_GRANTED) {
                strings.add(item);
            }
        });
        //全部通过
        if (strings.size() == 0) {
            CommonUtils.showToastShort("全部权限申请已通过");
        } else {
            requestPermissions(strings.toArray(new String[0]), REQUEST_CODE);
        }

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        //请求码同且请求通过
        if (requestCode == REQUEST_CODE && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            CommonUtils.showToastShort("全部权限申请已通过");
        }

    }


}